package com.WebAutoTest.common;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.chrome.ChromeDriver;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 23735
 * Date: 2023-01-23
 * Time: 15:15
 */
public class CommonDriver {
    private static ChromeDriver driver;

    /**
     * 创建驱动对象 并返回
     * @return
     */
    public static ChromeDriver getDriver(){
        if(driver==null){
            driver=new ChromeDriver();
            // 添加隐式等待
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(8));
        }
        return driver;
    }

    /**
     * 为了方便 文件的管理, 根据日期创建文件夹, 根据具体时间为文件命名
     * @return
     */
    public List<String> getTime(){
        // 文件夹命名格式 年月日
        SimpleDateFormat sim1=new SimpleDateFormat("yy-MM-dd");
        // 文件命名格式   时分秒 + 毫秒
        SimpleDateFormat sim2=new SimpleDateFormat("HH-mm-ssSS");
        String dirname=sim1.format(System.currentTimeMillis());
        String filename=sim2.format(System.currentTimeMillis());
        List<String> list =new ArrayList<>();
        list.add(dirname);
        list.add(filename);
        return list;
    }
    /**
     * 捕获屏幕截图, 并存放到对应的文件中
     * @param str 捕获屏幕截图的类名
     */
    public void getScreenshot(String str) throws IOException {
        List<String>list =getTime();
        File srcFile=driver.getScreenshotAs(OutputType.FILE);
        // 生成的文件夹路径: ./src/test/autoTest-2023-01-23/LoginTest-17-04-56.png
        String filename="./src/test/autoTest-"+list.get(0)+"/"+str+"-"+list.get(1)+".png";
        // 把屏幕截图放到指定的路径下
        FileUtils.copyFile(srcFile,new File(filename));
    }
}
